PyTorch 中常用的初始化神经网络权重的函数 |
您所在的位置:网站首页 › pytorch 膨胀卷积 › PyTorch 中常用的初始化神经网络权重的函数 |
nn.init.normal_: 将权重张量初始化为从正态分布中采样的随机值。具体来说,对于一个大小为 (n, m) 的权重张量 W W W,nn.init.normal_ 的操作相当于 W i , j ∼ N ( 0 , s t d 2 ) W_{i,j} \sim \mathcal{N}(0, std^2) Wi,j∼N(0,std2),其中 s t d std std 是一个标准差,可以通过调整参数 std 的值来控制权重的初始化范围。 nn.init.xavier_normal_: 将权重张量初始化为从均匀分布中采样的随机值。具体来说,对于一个大小为 (n, m) 的权重张量 W W W,nn.init.xavier_normal_ 的操作相当于 W i , j ∼ U ( − 6 n + m , 6 n + m ) W_{i,j} \sim \mathcal{U}(-\sqrt{\frac{6}{n+m}}, \sqrt{\frac{6}{n+m}}) Wi,j∼U(−n+m6 ,n+m6 ),其中 n n n 和 m m m 分别是权重张量的输入和输出维度。这个方法是基于 Xavier Glorot 和 Yoshua Bengio 在他们的论文 “Understanding the difficulty of training deep feedforward neural networks” 中提出的启发式方法,旨在使初始化的权重分布更适合于反向传播算法,并提高模型的训练效果。 nn.init.kaiming_normal_: 将权重张量初始化为从正态分布中采样的随机值,并根据激活函数的特性对权重进行缩放。具体来说,对于一个大小为 (n, m) 的权重张量 W W W,nn.init.kaiming_normal_ 的操作相当于 W i , j ∼ N ( 0 , 2 n ) W_{i,j} \sim \mathcal{N}(0, \sqrt{\frac{2}{n}}) Wi,j∼N(0,n2 ),其中 n n n 是权重张量的输入维度。对于不同的激活函数,缩放因子也不同,可以通过调整参数 mode 和 nonlinearity 来控制。 nn.init.orthogonal_: 将权重张量初始化为正交矩阵。具体来说,对于一个大小为 (n, m) 的权重张量 W W W,nn.init.orthogonal_ 的操作相当于对 W W W 进行 QR 分解,然后将 Q Q Q 作为初始化的权重张量。这个方法在循环神经网络 (RNN) 中常被使用,可以减少梯度爆炸和消失的问题。 nn.init.constant_: 将权重张量初始化为常数值。具体来说,对于一个大小为 (n, m) 的权重张量 W W W,nn.init.constant_ 的操作相当于 W i , j = v a l W_{i,j} = val Wi,j=val,其中 val 是一个常数值,可以通过调整参数 val 的值来控制权重的初始化。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |